package com.artisan.domain.dto;

import com.artisan.domain.entity.MAccount;
import lombok.Data;
import org.springframework.beans.BeanUtils;

import java.util.function.Function;

/**
 * 用户数据传输对象
 */
@Data
public class AccountDto {
    private int id;
    private String userName;  // 用户名
    private String password;  // 密码
    private String provinceName;  // 省
    private String cityName;  // 市
    private String areaName;  // 区
    private String streetName;  // 街道
    private String communityName;  // 社区
    private String roleName;  // 角色名称
    private int roleId;  // 角色id
    private long addDate;  // 添加时间
    private long lastLoginDate;  // 最后登录时间
    private int status; // 状态

    /**
     * 拷贝方法
     *
     * @return
     */
    public MAccount convert() {
        return new Function<AccountDto, MAccount>() {
            @Override
            public MAccount apply(AccountDto dto) {
                MAccount user = new MAccount();
                //纯属性拷贝操作，其中只掺杂有类型转换，没有业务、没有逻辑操作
//                user.setId(dto.getId())
//                .setUserName(dto.getUserName())
//                .setPassword(dto.getPassword())
//                .setNickName("")
//                .setProvinceName(dto.provinceName)
//                .setCityName(dto.cityName)
//                .setAreaName(dto.getAreaName())
//                .setStreetName(dto.streetName)
//                .setCommunityName(dto.communityName)
//                .setRoleId(dto.roleId)
//                .setAddDate(dto.addDate)
//                .setLastLoginDate(dto.lastLoginDate)
//                .setStatus(dto.status);
                //如果有相同的一些属性，也能加上这句
                BeanUtils.copyProperties(dto, user);
                return user;
            }
        }.apply(this);
    }
}
